# -*- coding:utf-8 -*-

import functools

#1.请为以下所有函数编写一个装饰器，添加上装饰器后可以实现：执行func时，先执行func函数内部代码，再输出 "after"
# def outer(func):
#     @functools.wraps(func)
#     def inner(*args, **kwargs):
#         res = func(*args, **kwargs)
#         print("after")
#         return res
#     return inner
# @outer
# def func(a1):
#     return a1 + "傻叉"
# @outer
# def base(a1,a2):
#     return a1 + a2 + '傻缺'
#
# @outer
# def foo(a1,a2,a3,a4):
#     return a1 + a2 + a3 + a4 + '傻蛋'
#
# print(func("没头脑"))
# print(func.__name__)
# base("不动脑筋","就是")
# print(base.__name__)
# foo("经常","不动脑","就会","变成")
# print(foo.__name__)

#2.请为以下所有函数编写一个装饰器，添加上装饰器后可以实现：将被装饰的函数执行5次，讲每次执行函数的结果按照顺序放到列表中，最终返回列表。
# import random
#
# def outer(func):
#     def inner(*args, **kwargs):
#         res_list = []
#         for i in range(5):
#             res = func(*args, **kwargs)
#             res_list.append(res)
#         return res_list
#     return inner
# @outer
# def func():
#     return random.randint(1,4)
#
# result = func() # 内部自动执行5次，并将每次执行的结果追加到列表最终返回给result
# print(result)
#3.请为以下函数编写一个装饰器，添加上装饰器后可以实现： 检查文件所在路径（文件件）是否存在，如果不存在自动创建文件夹（保证写入文件不报错）。
# import os
# def outer(func):
#     @functools.wraps(func)
#     def inner(path):
#         dirn = os.path.dirname(path)
#         if not os.path.exists(dirn):
#             os.makedirs(dirn)
#         res = func(path)
#         return res
#     return inner
# @outer
# def write_user_info(path):
#     file_obj = open(path, mode='w', encoding='utf-8')
#     file_obj.write("武祥宇")
#     file_obj.close()
#
# write_user_info('/Users/wxy/Documents/python/JustYY/baba.txt')
#4.分析代码写结果：
# def get_data():
#     scores = []
#
#     def inner(val):
#         scores.append(val)
#         print(scores)
#
#     return inner
#
#
# func = get_data()
#
# func(10)
# func(20)
# func(30)
#匿名函数
# data_list = [ lambda x:x+100,  lambda x:x+110, lambda x:x+120 ]
#
# print( data_list[0] )
#根据函数写写出其匿名函数的表达方式
# def func(a1,a2):
#     return a1 + a2
# a = lambda a1,a2:a1+a2
# def func(data):
#     return data.replace("苍老师","***")
# b = lambda data:data.replace("苍老师","***")
# def func(data):
#     name_list = data.replace(".")
#     return name_list[-1]
# c = lambda data:data.replace(".")[-1]
#三元运算
# num = input("请输入内容: \n")
# data = "你好呀" if "hello" in num else "没事"
# print(data)
#复合使用
# d = lambda a1,a2: a1 if a1>a2 else a2
# print(d(2,3))
